From 4a93bbaaffd17f2b379c0d780afa942b292b7197 Mon Sep 17 00:00:00 2001 From: Jimi Xenidis Date: Tue, 26 Sep 2006 14:01:11 -0400 Subject: [PATCH] [XEN][POWERPC] U4 DART workaround for functionality This patch invalidates the whole DART cache rather than the single entry. Until we get single entry invalidating we'll have an obvious performance issue. Signed-off-by: Jimi Xenidis Signed-off-by: Hollis Blanchard --HG-- extra : transplant_source : %2A%A9%A6T%08%BC%10YL%D2H%8Ff%40WO%5E%A6uI --- xen/arch/powerpc/dart_u4.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/xen/arch/powerpc/dart_u4.c b/xen/arch/powerpc/dart_u4.c index c3495cfce3..131adc983f 100644 --- a/xen/arch/powerpc/dart_u4.c +++ b/xen/arch/powerpc/dart_u4.c @@ -19,6 +19,7 @@ */ #undef DEBUG +#define INVALIDATE_ALL #include #include @@ -123,9 +124,14 @@ static void u4_inv_all(void) static void u4_inv_entry(ulong pgn) { +#ifdef INVALIDATE_ALL + return u4_inv_all(); +#else union dart_ctl dc; ulong retries = 0; + return u4_inv_all(); + dc.dc_word = in_32(&dart->d_dartcntl.dc_word); dc.dc_bits.dc_ilpn = pgn; dc.dc_bits.dc_ione = 1; @@ -139,6 +145,7 @@ static void u4_inv_entry(ulong pgn) if (retries > 1000000) panic("WAY! too long\n"); } while (dc.dc_bits.dc_ione != 0); +#endif } static struct dart_ops u4_ops = { -- 2.30.2